char *c="chen xi";为什么可以把字符串赋值给指针变量?

来源:百度知道 编辑:UC知道 时间:2024/05/17 21:42:17
这里有什么玄机吗?
请高手指点!
多谢!

"chen xi"的类型是const char * , 编译器在编译时会在常量区为"chen xi"分配空间存储这个字符串,然后将字符串的首地址赋给字符指针char * c

至于能将const char * 赋给 char * c, 是因为在c语言时代,这已成为一种习惯的写法。 所以,当使用指针c试图改变"chen xi"时,如:c[0]='a'; 编译并不会出错,但运行时会出错。

指针也就相当于地址变量,相当于定义了一个字符数组的数组名,即:
char a[]="chen xi";当然可以用来存字符串了

先要说,你的理解是错误的!

这个指针还是指针!只是指的是字符串的首地址!
也就是说:把字符串赋给以该指针所指向的地址为开始位置的一段连续空间!

还要说明的是,这种用法只能在定义的时候使用,不能单独作为赋值语句写出!